home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 1.toast / What's New? / Development Kits / Mac OS / USB DDK 1.4.6f4 / Examples / USBSampleStorageDriver / UnitTableDriver / UnitTableDriverIcons.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-25  |  16.7 KB  |  374 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        UnitTableDriverIcons.c
  3.  
  4.     Contains:    xxx put contents here xxx
  5.  
  6.     Version:    xxx put version here xxx
  7.  
  8.     Copyright:    © 2000 by Apple Computer, Inc., all rights reserved.
  9.  
  10. */
  11.  
  12. /*
  13.     File:        StorageClassUTDriverIcons.c
  14.  
  15.     Contains:    All declarations and types that are associated with the 
  16.                 Driver's Drive and Media Icons.
  17.  
  18.     Version:    1.1
  19.  
  20.     Copyright:    © 1998-2000 by Apple Computer, Inc., all rights reserved.
  21.  
  22. */
  23. #include <DriverServices.h>
  24. #include <Folders.h>
  25. #include <DriverGestalt.h>
  26.  
  27. #include "UnitTableDriverIcons.h"
  28.  
  29. IconFamilyPtr        CartridgeMediaIconFamily;
  30. IconFamilyHandle    FloppyMediaIconFamily;
  31.  
  32. // The IconRef is used for getting the Floppy family of Icons from the system
  33. static     IconRef  theFloppyIconRef;
  34.  
  35. // This is the black and white Apple Floppy icon and mask for use in
  36. // systems where the IconServicesLib isn't present
  37. DiskIcon AppleFloppyMediaIcon =    
  38. {
  39.     0x7FFF, 0xFFF0, 0x8080, 0x0208, 0x8080, 0xE204, 0x8081, 0x1202,
  40.     0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202,
  41.     0x8080, 0xE202, 0x8080, 0x0202, 0x807F, 0xFC02, 0x8000, 0x0002,
  42.     0x8000, 0x0002, 0x8000, 0x0002, 0x8000, 0x0002, 0x87FF, 0xFFC2,
  43.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  44.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  45.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  46.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x7FFF, 0xFFFC,
  47.  
  48.     /*************************  MASK  ****************************/
  49.     0x7FFF, 0xFFF0, 0xFFFF, 0xFFF8, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE,
  50.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  51.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  52.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  53.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  54.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  55.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  56.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0x7FFF, 0xFFFC
  57. };
  58.  
  59. // The following structures are all used by the driver in systems
  60. // that support the color icons by use of the IconServicesLib
  61.  
  62. // This is the Large 1 bit Cartridge icon and mask, this is also used in
  63. // systems where the IconServicesLib isn't present
  64. DiskIcon CartridgeIcon =        //cartridge icon
  65. {
  66.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x4440, 0x0108, 0x8440, 0x0104,
  67.     0x8441, 0xE104, 0x8441, 0x2104, 0x8441, 0x2104, 0x8441, 0x2104,
  68.     0x8441, 0x2104, 0x8441, 0xE104, 0x8440, 0x0104, 0x8440, 0x0104,
  69.     0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104,
  70.     0x8440, 0x0104, 0x847F, 0xFF04, 0x8400, 0x0104, 0x8400, 0x0104,
  71.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104,
  72.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0106, 0x8400, 0x0107,
  73.     0x8400, 0x0107, 0x8400, 0x0107, 0x8400, 0x0107, 0x7FFF, 0xFFFE,
  74.     
  75.     /*************************  MASK  ****************************/
  76.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x7FFF, 0xFFF8, 0xFFFF, 0xFFFC,
  77.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  78.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  79.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  80.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  81.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  82.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF,
  83.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 0xFFFE
  84. };
  85.  
  86. // This is the Large 4 bit Cartridge icon
  87. UInt16 Media_icl4[] = 
  88. {
  89.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  90.     0x00FF, 0xF0AF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  91.     0x0F00, 0x0DCC, 0xCA00, 0x0000, 0x0000, 0x0CA0, 0x000C, 0xF000,
  92.     0xF00C, 0xCDCC, 0xCD0C, 0x0C0C, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  93.     0xF0CC, 0xCDCC, 0xCD00, 0xC00E, 0xEEE0, 0xCCD0, 0xCCCC, 0xDF00,
  94.     0xF0CC, 0xCDCC, 0xCD0C, 0x0C0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  95.     0xF0CC, 0xCDCC, 0xCD00, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  96.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  97.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  98.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  99.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC00, 0x0000, 0xCCD0, 0xCCCC, 0xDF00,
  100.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  101.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  102.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  103.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  104.     0xF0CC, 0xCDCC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  105.     0xF0CC, 0xCDCC, 0xCDDD, 0xDDDD, 0xDDDD, 0xDDE0, 0xCCCC, 0xDF00,
  106.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  107.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  108.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  109.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  110.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  111.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  112.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  113.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  114.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  115.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFA0,
  116.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  117.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  118.     0xF00C, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  119.     0xFDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDC, 0xDDDD, 0xDFAA,
  120.     0x0FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFAA0
  121. };
  122.  
  123. // This is the Large 8 bit Cartridge icon
  124. UInt16 Media_icl8[] =
  125. {
  126.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  127.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  128.     0x0000, 0xFFFF, 0xFF00, 0xFDFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  129.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000,
  130.     0x00FF, 0x0000, 0x00FA, 0xF6F6, 0xF6FD, 0x0000, 0x0000, 0x0000,
  131.     0x0000, 0x0000, 0x00F6, 0xFD00, 0x00F5, 0xF52B, 0xFF00, 0x0000,
  132.     0xFF00, 0x00F6, 0xF6FA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00F6,
  133.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF62B, 0xF7F8, 0xF9FF, 0x0000,
  134.     0xFF00, 0xF62B, 0x2BFA, 0xF8F8, 0xF8F9, 0x0000, 0xF600, 0x00FB,
  135.     0xFBFB, 0xFB00, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  136.     0xFF00, 0xF6F7, 0x2BFA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00FB,
  137.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  138.     0xFF00, 0xF7F7, 0xF7FA, 0xF8F8, 0xF8F9, 0x0000, 0xF6F6, 0x00FB,
  139.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  140.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  141.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  142.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  143.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  144.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  145.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  146.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x0000,
  147.     0x0000, 0x0000, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  148.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  149.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  150.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  151.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  152.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  153.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  154.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  155.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  156.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xF7F6, 0xF6F6, 0xF6F6,
  157.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  158.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xFAFA, 0xFAFA, 0xFAFA,
  159.     0xFAFA, 0xFAFA, 0xFAFA, 0xFB00, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  160.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  161.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  162.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  163.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  164.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  165.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  166.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  167.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  168.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  169.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  170.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  171.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  172.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  173.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  174.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  175.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  176.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  177.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  178.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  179.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFD00,
  180.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  181.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  182.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  183.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  184.     0xFF00, 0xF5F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  185.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  186.     0xFFF9, 0xF9F9, 0xF9FA, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9,
  187.     0xF9F9, 0xF9F9, 0xF9F9, 0xF92B, 0xF9F9, 0xF9F9, 0xF9FF, 0xFDFD,
  188.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  189.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD, 0xFD00
  190. };
  191.  
  192. // This is the small 1 bit Cartridge icon and mask
  193. UInt16 Media_ics1[] =
  194. {
  195.     0x7FFC, 0xA812, 0xA9D2, 0xA952, 0xA9D2, 0xA812, 0xA812, 0xA812,
  196.     0xAFF2, 0xA012, 0xA012, 0xA012, 0xA012, 0xA013, 0xA013, 0xFFFF,
  197.     0x7FFC, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,
  198.     0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF
  199. };
  200.  
  201. // This is the small 4 bit Cartridge icon
  202. UInt16 Media_ics4[] = 
  203. {
  204.     0x0FFF, 0xFFFF, 0xFFFF, 0xFF00, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  205.     0xFCDC, 0xDCCE, 0xEECD, 0xCCF0, 0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0,
  206.     0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  207.     0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  208.     0xFCDC, 0xDDDD, 0xDDDE, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  209.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  210.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA,
  211.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFA
  212. };
  213.  
  214. // This is the small 8 bit Cartridge icon
  215. UInt16 Media_ics8[] =
  216. {
  217.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  218.     0xFFF6, 0xFAF8, 0xFDF6, 0xF6F6, 0xF6F6, 0xF6FD, 0xF6F8, 0xFF00,
  219.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xFBFB, 0xF6FA, 0xF7F8, 0xFF00,
  220.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  221.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  222.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  223.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  224.     0xFFF7, 0xFAF7, 0xF9F7, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  225.     0xFFF7, 0xFAF7, 0xF9FA, 0xFAFA, 0xFAFA, 0xFAFB, 0xF8F8, 0xFF00,
  226.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  227.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  228.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  229.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  230.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  231.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  232.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD
  233. };
  234. // The IconServicesLib also supports 32 bit color icons with 8 bit masks,
  235. // but currently this driver does not include the icons for this style.
  236.  
  237. void BuildMediaIconFamily( void )
  238. {
  239.     UInt32                 sizeOfFamily;
  240.     UInt32                 elementOffset = 0;
  241.     OSErr                err;
  242.     IconFamilyElement     *CartridgeMedia_ICN1;
  243.     IconFamilyElement    *CartridgeMedia_icl4;
  244.     IconFamilyElement    *CartridgeMedia_icl8;
  245.     IconFamilyElement     *CartridgeMedia_ics1;
  246.     IconFamilyElement     *CartridgeMedia_ics4; 
  247.     IconFamilyElement     *CartridgeMedia_ics8;
  248.  
  249.     // Check to see if the IconServices Library was imported by checking
  250.     // if the address of the GetIconRef call is nil, if it is don't do any
  251.     // of the IconServices calls
  252.     if(GetIconRef==nil)
  253.     {
  254.         FloppyMediaIconFamily = nil;
  255.         CartridgeMediaIconFamily = nil;
  256.         return;
  257.     }
  258.     
  259.     // Set up the Floppy Icon Family
  260.     err = GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFloppyIcon, &theFloppyIconRef);
  261.     if ( err == noErr )
  262.     {
  263.         err = IconRefToIconFamily (theFloppyIconRef, kSelectorAllAvailableData, &FloppyMediaIconFamily);
  264.     }
  265.     else
  266.     {
  267.         FloppyMediaIconFamily = nil;
  268.     }
  269.  
  270.     // Calculate the size of the Cartridge icon Family resource
  271.     sizeOfFamily = (sizeof(IconFamilyResource) - sizeof(IconFamilyElement)) + ((sizeof(OSType) + sizeof(Size)) * 6 ) + sizeof(CartridgeIcon) 
  272.                     + sizeof(Media_icl4) + sizeof(Media_icl8) + sizeof(Media_ics1) + sizeof(Media_ics4) + sizeof(Media_ics8);
  273.  
  274.     CartridgeMediaIconFamily = (IconFamilyPtr) PoolAllocateResident(sizeOfFamily, true);
  275.     if(CartridgeMediaIconFamily == nil)
  276.     {
  277.         return;
  278.     }
  279.     
  280.     // Set up the Icon family structure
  281.     CartridgeMediaIconFamily->resourceType = kIconFamilyType;
  282.     CartridgeMediaIconFamily->resourceSize = sizeOfFamily;
  283.  
  284.     // Set up the one bit small icon and mask
  285.     elementOffset = 0; 
  286.     CartridgeMedia_ics1 = (IconFamilyElement *) &CartridgeMediaIconFamily->elements;
  287.     CartridgeMedia_ics1->elementType = kSmall1BitMask;
  288.     CartridgeMedia_ics1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics1);
  289.     BlockMoveData(&Media_ics1, &CartridgeMedia_ics1->elementData[0], sizeof(Media_ics1));
  290.  
  291.     // Set up the four bit color small icon
  292.     elementOffset += CartridgeMedia_ics1->elementSize; 
  293.     CartridgeMedia_ics4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  294.     CartridgeMedia_ics4->elementType = kSmall4BitData;
  295.     CartridgeMedia_ics4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics4);
  296.     BlockMoveData(&Media_ics4, &CartridgeMedia_ics4->elementData[0], sizeof(Media_ics4));
  297.  
  298.     // Set up the 8 bit color small icon
  299.     elementOffset += CartridgeMedia_ics4->elementSize; 
  300.     CartridgeMedia_ics8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  301.     CartridgeMedia_ics8->elementType = kSmall8BitData;
  302.     CartridgeMedia_ics8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics8);
  303.     BlockMoveData(&Media_ics8, &CartridgeMedia_ics8->elementData[0], sizeof(Media_ics8));
  304.     
  305.     // Set up the one bit Large icon and mask
  306.     elementOffset += CartridgeMedia_ics8->elementSize; 
  307.     CartridgeMedia_ICN1 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  308.     CartridgeMedia_ICN1->elementType = kLarge1BitMask;
  309.     CartridgeMedia_ICN1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(CartridgeIcon);
  310.     BlockMoveData(&CartridgeIcon, &CartridgeMedia_ICN1->elementData[0], sizeof(CartridgeIcon));
  311.  
  312.     // Set up the four bit color Large icon
  313.     elementOffset += CartridgeMedia_ICN1->elementSize; 
  314.     CartridgeMedia_icl4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  315.     CartridgeMedia_icl4->elementType = kLarge4BitData;
  316.     CartridgeMedia_icl4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl4);
  317.     BlockMoveData(&Media_icl4, &CartridgeMedia_icl4->elementData[0], sizeof(Media_icl4));
  318.  
  319.     // Set up the 8 bit color Large icon
  320.     elementOffset += CartridgeMedia_icl4->elementSize; 
  321.     CartridgeMedia_icl8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  322.     CartridgeMedia_icl8->elementType = kLarge8BitData;
  323.     CartridgeMedia_icl8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl8);
  324.     BlockMoveData(&Media_icl8, &CartridgeMedia_icl8->elementData[0], sizeof(Media_icl8));
  325. }
  326.  
  327. // Release the icons and any memory that is used by them
  328. void DestroyMediaIconFamily( void )
  329. {
  330.     if ( CartridgeMediaIconFamily != nil)
  331.     {
  332.         PoolDeallocate(CartridgeMediaIconFamily);
  333.     }
  334.     
  335.     CartridgeMediaIconFamily = nil;
  336.     
  337.     if ( FloppyMediaIconFamily != nil )
  338.     {
  339.         ReleaseIconRef(theFloppyIconRef);
  340.     }
  341.  
  342.     FloppyMediaIconFamily = nil;
  343. }
  344.  
  345. #pragma mark --
  346. #pragma mark 1 Bit Icon Accessors
  347. // Accessors for the Black and White DiskIcon pointers
  348. DiskIcon *GetOneBitIconPtr( OSType theDevice )
  349. {
  350.     DiskIcon *theMediaIcon = (DiskIcon *) &CartridgeIcon;
  351.  
  352.     if ( theDevice == kdgFloppyType )
  353.     {
  354.         theMediaIcon = (DiskIcon *) &AppleFloppyMediaIcon;
  355.     }
  356.     
  357.     return theMediaIcon;
  358. }
  359.  
  360. #pragma mark --
  361. #pragma mark Icon Family Accessors
  362. // Accessor functions for the different Icon Families
  363. IconFamilyPtr    GetFloppyIconFamilyPtr( void )
  364. {
  365.     return (IconFamilyPtr) &FloppyMediaIconFamily;
  366. }
  367.  
  368. IconFamilyPtr    GetMediaIconFamilyPtr( void )
  369. {
  370.     IconFamilyPtr theRemovableIconPtr = (IconFamilyPtr) &CartridgeMediaIconFamily;
  371.     
  372.     return theRemovableIconPtr;
  373. }
  374.